﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AccesoDatos.Manejador;
using AccesoDatos.Objetos;
using Conexion;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

namespace Autorizacion_facturas_caja
{
    public partial class frmConsignacion_Captura : Form
    {
        objRH oRH = new objRH();
        objConsignacion obj = new objConsignacion();
        Manejador_Consignacion MA = new Manejador_Consignacion();
        ClsConexion conexion = new ClsConexion();

        #region FUNCIONES
        //Ingresa los datos de la tabla marca en la base de datos al combobox Marca
        public frmConsignacion_Captura()
        {
            InitializeComponent();

            cmbMarcas.DataSource = MA.Marcas();
            cmbMarcas.ValueMember = "idMarca";
            cmbMarcas.DisplayMember = "Marca";

            cmbLapM.DataSource = MA.Marcas();
            cmbLapM.ValueMember = "idMarca";
            cmbLapM.DisplayMember = "Marca";

            cmbMMouse.DataSource = MA.Marcas();
            cmbMMouse.ValueMember = "idMarca";
            cmbMMouse.DisplayMember = "Marca";

            cmbTMarca.DataSource = MA.Marcas();
            cmbTMarca.ValueMember = "idMarca";
            cmbTMarca.DisplayMember = "Marca";
        }
        bool agregar;
        bool modificar;
        //Asigna un nombre a los botones y campos
        private void frmDatAsignacion_Load(object sender, EventArgs e)
        {
            toolTip1.SetToolTip(txBNumDS, "SOLO PARA LAPTOP");
            toolTip1.SetToolTip(btnBuscar, "BUSCAR");
            toolTip1.SetToolTip(btnAgregar, "GUARDAR");
            toolTip1.SetToolTip(btnSalir, "CANCELAR");
            toolTip1.SetToolTip(btnModificar, "MODIFICAR");
            toolTip1.SetToolTip(btnReporte, "REPORTE");
            toolTip1.SetToolTip(txBMarcaMonitor, "OTRA MARCA");
            toolTip1.SetToolTip(txBMarcaMouse, "OTRA MARCA");
            toolTip1.SetToolTip(txBMarcaTeclado, "OTRA MARCA");
            toolTip1.SetToolTip(txBMM, "OTRA MARCA");
            toolTip1.SetToolTip(cmbMarcas, "MARCAS REGISTRADAS");
            toolTip1.SetToolTip(cmbMMouse, "MARCAS REGISTRADAS");
            toolTip1.SetToolTip(cmbTMarca, "MARCAS REGISTRADAS");
            toolTip1.SetToolTip(cmbLapM, "MARCAS REGISTRADAS");
            toolTip1.SetToolTip(txBNumDS, "NUMERO DE SERIE");
            toolTip1.SetToolTip(txBProces, "PROCESADOR");
            toolTip1.SetToolTip(txBDiscoD, "DISCO DURO");
            toolTip1.SetToolTip(txBRam, "RAM");
            toolTip1.SetToolTip(txBModeloMonitor, "MODELO DEL MONITOR");
            toolTip1.SetToolTip(txBNumSerieMonitor, "NUMERO DE SERIE DEL MONITOR");
            toolTip1.SetToolTip(txBModeloMouse, "MODELO DEL MAUSE");
            toolTip1.SetToolTip(txBNumSerieMouse, "NUMERO DE SERIE DEL MAUSE");
            toolTip1.SetToolTip(txBModeloTeclado, "MODELO DEL TECLADO");
            toolTip1.SetToolTip(txBNumSerieTeclado, "NUMERO DE SERIE DEL TECLADO");
            toolTip1.SetToolTip(txBAcc1, "ACCESORIO 1");
            toolTip1.SetToolTip(txBAcc2, "ACCESORIO 2");
            toolTip1.SetToolTip(txBAcc3, "ACCESORIO 3");
            toolTip1.SetToolTip(txBAcc4, "ACCESORIO 4");
            toolTip1.SetToolTip(txBAcc5, "ACCESORIO 5");
            toolTip1.SetToolTip(txBComentario, "COMENTARIO");
            txBMarcaMonitor.Text = "";
            txBMarcaMouse.Text = "";
            txBMarcaTeclado.Text = "";
            txBMM.Text = "";
            btnAgregar.Visible = false;
            btnModificar.Visible = false;
            btnReporte.Visible = false;
            btnAceptar.Visible = false;
            label3.Visible = false;
        }
        //limpia campos
        #region Limpia
        private void cmbLapM_SelectedIndexChanged(object sender, EventArgs e)
        {
            txBMM.Text = cmbLapM.Text;
        }

        private void txBMM_TextChanged(object sender, EventArgs e)
        {
            cmbLapM.Text = "";
        }

        private void cmbMarcas_SelectedIndexChanged(object sender, EventArgs e)
        {
            txBMarcaMonitor.Text = cmbMarcas.Text;
        }

        private void txBMarcaMonitor_TextChanged(object sender, EventArgs e)
        {
            cmbMarcas.Text = "";
        }

        private void txBMarcaMouse_TextChanged(object sender, EventArgs e)
        {
            cmbMMouse.Text = "";
        }

        private void cmbMMouse_SelectedIndexChanged(object sender, EventArgs e)
        {

            txBMarcaMouse.Text = cmbMMouse.Text;
        }

        private void txBMarcaTeclado_TextChanged(object sender, EventArgs e)
        {
            cmbTMarca.Text = "";
        }

        private void cmbTMarca_SelectedIndexChanged(object sender, EventArgs e)
        {
            txBMarcaTeclado.Text = cmbTMarca.Text;
        }
        #endregion

        #endregion

        #region BOTONES
        //abilita y desabilita botones-grupos
        private void btnAgregar_Click(object sender, EventArgs e)
        {
            agregar = true;
            groupBox2.Enabled = true;
            groupBox3.Enabled = true;
            groupBox4.Enabled = true;
            groupBox5.Enabled = true;
            groupBox6.Enabled = true;
            groupBox7.Enabled = true;
            btnAgregar.Visible = false;
            btnAceptar.Visible = true;
        }
        //cierra la forma
        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        //Consulta la lista de empleados y obtiene los datos de estos
        private void btnBuscar_Click(object sender, EventArgs e)
        {
            limpiar();
            frmEmpleado_Busqueda busca = new frmEmpleado_Busqueda();
            busca.ShowDialog();
            oRH.Id_Empleado = busca.obj1.Id_Empleado;
            oRH.Nombre = busca.obj1.Nombre;
            oRH.Apellidos = busca.obj1.Apellidos;
            oRH.Puesto = busca.obj1.Puesto;
            label32.Text = oRH.Nombre + " " + oRH.Apellidos;
            label33.Text = oRH.Puesto;
            try
            {
                obj = MA.ListaConsignacion(oRH.Id_Empleado);
                cBTipo.Text = obj.Tipo_Equipo;
                txBMM.Text = obj.MotherBoard_Marca;
                txBNumDS.Text = obj.No_De_Serie;
                txBProces.Text = obj.Procesador;
                txBDiscoD.Text = obj.Disco_Duro;
                txBRam.Text = obj.RAM;
                txBMarcaMonitor.Text = obj.Monitor_Marca;
                txBModeloMonitor.Text = obj.Monitor_Modelo;
                txBNumSerieMonitor.Text = obj.Monitor_No_Serie;
                txBMarcaMouse.Text = obj.Mouse_Marca;
                txBModeloMouse.Text = obj.Mouse_Modelo;
                txBNumSerieMouse.Text = obj.Mouse_No_Serie;
                txBMarcaTeclado.Text = obj.Teclado_Marca;
                txBModeloTeclado.Text = obj.Teclado_Modelo;
                txBNumSerieTeclado.Text = obj.Teclado_No_Serie;
                txBAcc1.Text = obj.Accesorio_1;
                txBAcc2.Text = obj.Accesorio_2;
                txBAcc3.Text = obj.Accesorio_3;
                txBAcc4.Text = obj.Accesorio_4;
                txBAcc5.Text = obj.Accesorio_5;
                txBComentario.Text = obj.Comentario;

                btnAgregar.Visible = false;
                btnModificar.Visible = true;
                btnReporte.Visible = true;
                groupBox2.Enabled = false;
                groupBox3.Enabled = false;
                groupBox4.Enabled = false;
                groupBox5.Enabled = false;
                groupBox6.Enabled = false;
                groupBox7.Enabled = false;
            }
            catch
            {
                btnModificar.Visible = false;
                btnReporte.Visible = false;
                btnAceptar.Visible = false;
                btnAgregar.Visible = false;
                groupBox2.Enabled = true;
                groupBox3.Enabled = true;
                groupBox4.Enabled = true;
                groupBox5.Enabled = true;
                groupBox6.Enabled = true;
                groupBox7.Enabled = true;

                if (oRH.Nombre == null)
                {
                    btnAgregar.Visible = false;
                }
                else
                {
                    btnAceptar.Visible = true;
                    agregar = true;
                    // btnAgregar.Visible = true;
                    MessageBox.Show("NO TIENE EQUIPO ASIGNADO", "ALERTA");
                }
            }
        }
        //abilita y desabilita campos para las modificaciones
        private void btnModificar_Click(object sender, EventArgs e)
        {

            modificar = true;
            groupBox2.Enabled = true;
            groupBox3.Enabled = true;
            groupBox4.Enabled = true;
            groupBox5.Enabled = true;
            groupBox6.Enabled = true;
            groupBox7.Enabled = true;
            btnModificar.Visible = false;
            btnAceptar.Visible = true;
            btnReporte.Visible = false;
        }
        //genera reporte
        private void btnReporte_Click(object sender, EventArgs e)
        {
            frmConsignacion_Reporte_Tipo fstr = new frmConsignacion_Reporte_Tipo(obj.Id_Consigacion, oRH.Id_Empleado);
            fstr.ShowDialog();
        }
        //cierra la forma
        private void btnSalir_Click(object sender, EventArgs e)
        {
            Close();
        }
        //realiza las inserciones y las modificaciones de las consignaciones
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (agregar == true)
            {
                if (validerror() == true)
                {
                    bool resp = MA.InsercionEquipoConsignacion(
                    oRH.Id_Empleado.ToString(),
                    cBTipo.Text.Trim(),
                    txBMM.Text.Trim(),
                    txBNumDS.Text.Trim(),
                    txBProces.Text.Trim(),
                    txBDiscoD.Text.Trim(),
                    txBRam.Text.Trim(),
                    txBMarcaMonitor.Text.Trim(),
                    txBModeloMonitor.Text.Trim(),
                    txBNumSerieMonitor.Text.Trim(),
                    txBMarcaMouse.Text.Trim(),
                    txBModeloMouse.Text.Trim(),
                    txBNumSerieMouse.Text.Trim(),
                    txBMarcaTeclado.Text.Trim(),
                    txBModeloTeclado.Text.Trim(),
                    txBNumSerieTeclado.Text.Trim(),
                    txBAcc1.Text.Trim(),
                    txBAcc2.Text.Trim(),
                    txBAcc3.Text.Trim(),
                    txBAcc4.Text.Trim(),
                    txBAcc5.Text.Trim(),
                    txBComentario.Text.Trim(),
                    1, DateTime.Now);
                    if (resp == true)
                    {
                        MessageBox.Show("DATOS GUARDADOS CORRECTAMENTE", "AVISO");
                        btnReporte.Visible = true;
                    }
                    else { MessageBox.Show("NO SE PUDIERON GUARDAR LOS DATOS", "ALERTA"); }
                    btnReporte.Visible = false;
                    btnAceptar.Visible = false;
                    limpiar();
                }
            }
            else if (modificar == true)
            {
                if (validerror() == true)
                {
                    validerror();
                    try
                    {
                        //realiza la modificacion de los datos
                        bool resp = MA.ModificarConsignacion(

                        oRH.Id_Empleado,
                        cBTipo.Text.Trim(),
                        txBMM.Text.Trim(),
                        txBNumDS.Text.Trim(),
                        txBProces.Text.Trim(),
                        txBDiscoD.Text.Trim(),
                        txBRam.Text.Trim(),
                        txBMarcaMonitor.Text.Trim(),
                        txBModeloMonitor.Text.Trim(),
                        txBNumSerieMonitor.Text.Trim(),
                        txBMarcaMouse.Text.Trim(),
                        txBModeloMouse.Text.Trim(),
                        txBNumSerieMouse.Text.Trim(),
                        txBMarcaTeclado.Text.Trim(),
                        txBModeloTeclado.Text.Trim(),
                        txBNumSerieTeclado.Text.Trim(),
                        txBAcc1.Text.Trim(),
                        txBAcc2.Text.Trim(),
                        txBAcc3.Text.Trim(),
                        txBAcc4.Text.Trim(),
                        txBAcc5.Text.Trim(),
                        txBComentario.Text.Trim(),
                        1);
                        if (resp == true)
                        {
                            MessageBox.Show("DATOS GUARDADOS CORRECTAMENTE", "AVISO");
                        }
                        limpiar();
                        btnAceptar.Visible = false;
                        btnReporte.Visible = false;
                    }
                    catch { MessageBox.Show("NO SE PUDIERON GUARDAR LOS DATOS", "ALERTA"); }
                }
            }

        }
        
        #endregion

        #region  EVENTOS
        //Limpia los campos 
        private void limpiar()
        {
            label32.Text = "";
            label33.Text = "";
            cBTipo.SelectedItem = null;
            cmbLapM.Text = "";
            txBMM.Text = "";
            txBNumDS.Text = "";
            txBProces.Text = "";
            txBDiscoD.Text = "";
            txBRam.Text = "";
            cmbMarcas.SelectedItem = null;
            txBMarcaMonitor.Text = "";
            txBModeloMonitor.Text = "";
            txBNumSerieMonitor.Text = "";
            cmbMMouse.SelectedItem = null;
            txBMarcaMouse.Text = "";
            txBModeloMouse.Text = "";
            txBNumSerieMouse.Text = "";
            cmbTMarca.SelectedItem = null;
            txBMarcaTeclado.Text = "";
            txBModeloTeclado.Text = "";
            txBNumSerieTeclado.Text = "";
            txBAcc1.Text = "";
            txBAcc2.Text = "";
            txBAcc3.Text = "";
            txBAcc4.Text = "";
            txBAcc5.Text = "";
            txBComentario.Text = "";
            errorProvider1.Clear();
        }
        //abilita y desabilita campos dependiendo del tipo de equipo de computo
        private void cBTipo_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cBTipo.Text.Trim() == "DESKTOP")
            {
                txBMM.Text = "";
                txBMM.Enabled = true;
                txBNumDS.Enabled = false;
                cmbLapM.Enabled = false;
                txBProces.Enabled = true;
                txBDiscoD.Enabled = true;
                txBRam.Enabled = true;
                label29.Visible = false;
                label3.Visible = true;
                label36.Visible = true;
                label41.Visible = true;
                label39.Visible = true;
                label42.Visible = true;
                label40.Visible = true;
            }
            else
            {
                txBMM.Text = "";
                txBNumDS.Enabled = true;
                label3.Visible = false;
                label29.Visible = true;
                cmbLapM.Enabled = true;
                txBMM.Enabled = true;
                txBProces.Enabled = true;
                txBDiscoD.Enabled = true;
                txBRam.Enabled = true;
                label36.Visible = false;
                label41.Visible = false;
                label39.Visible = false;
                label42.Visible = false;
                label40.Visible = false;
            }
        }
        //Valida los campos vacios no permitidos
        private bool validerror()
        {
            bool val = true;

            if (cBTipo.Text == "")
            {
                errorProvider1.SetError(cBTipo, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBNumDS.Text == "" && cBTipo.Text == "LAPTOP")
            {
                errorProvider1.SetError(txBNumDS, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBDiscoD.Text == "")
            {
                errorProvider1.SetError(txBDiscoD, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBMM.Text == "")
            {
                errorProvider1.SetError(txBMM, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBProces.Text == "")
            {
                errorProvider1.SetError(txBProces, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBRam.Text == "")
            {
                errorProvider1.SetError(txBRam, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBMarcaMonitor.Text == "" && cBTipo.Text == "DESKTOP")
            {
                errorProvider1.SetError(txBMarcaMonitor, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBModeloMonitor.Text == "" && cBTipo.Text == "DESKTOP")
            {
                errorProvider1.SetError(txBModeloMonitor, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBNumSerieMonitor.Text == "" && cBTipo.Text == "DESKTOP")
            {
                errorProvider1.SetError(txBNumSerieMonitor, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBMarcaMouse.Text == "" && cBTipo.Text == "DESKTOP")
            {
                errorProvider1.SetError(txBMarcaMouse, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBModeloMouse.Text == "" && cBTipo.Text == "DESKTOP")
            {
                errorProvider1.SetError(txBModeloMouse, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBNumSerieMonitor.Text == "" && cBTipo.Text == "DESKTOP")
            {
                errorProvider1.SetError(txBMarcaTeclado, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txBModeloTeclado.Text == "" && cBTipo.Text == "DESKTOP")
            {
                errorProvider1.SetError(txBModeloTeclado, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (val == false)
            {
                return false;
            }
            else { return val; }

        }
        //valida la introduccion de solo digitos en algunos campos
        private void txBNumDS_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }
        #endregion

    }
}
